package com.sky.orangehireserver.modules.enterprise.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 岗位信息响应VO
 * 
 * @author sky
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(description = "岗位信息响应VO")
public class JobVO {

    /**
     * 职位ID
     */
    @Schema(description = "职位ID", example = "1")
    private Long id;

    /**
     * 所属企业ID
     */
    @Schema(description = "所属企业ID", example = "1")
    private Long orgId;

    /**
     * 所属企业名称
     */
    @Schema(description = "所属企业名称", example = "阿里巴巴集团")
    private String orgName;

    /**
     * 职位名称
     */
    @Schema(description = "职位名称", example = "Java高级开发工程师")
    private String title;

    /**
     * 所属部门
     */
    @Schema(description = "所属部门", example = "技术部")
    private String department;

    /**
     * 工作地点/城市
     */
    @Schema(description = "工作地点/城市", example = "北京")
    private String location;

    /**
     * 工作类型
     */
    @Schema(description = "工作类型", example = "full_time")
    private String employmentType;

    /**
     * 工作类型名称
     */
    @Schema(description = "工作类型名称", example = "全职")
    private String employmentTypeName;

    /**
     * 经验要求
     */
    @Schema(description = "经验要求", example = "mid")
    private String seniority;

    /**
     * 经验要求名称
     */
    @Schema(description = "经验要求名称", example = "中级")
    private String seniorityName;

    /**
     * 学历要求
     */
    @Schema(description = "学历要求", example = "bachelor")
    private String education;

    /**
     * 学历要求名称
     */
    @Schema(description = "学历要求名称", example = "本科")
    private String educationName;

    /**
     * 最低薪资
     */
    @Schema(description = "最低薪资", example = "10000")
    private BigDecimal salaryMin;

    /**
     * 最高薪资
     */
    @Schema(description = "最高薪资", example = "20000")
    private BigDecimal salaryMax;

    /**
     * 货币类型
     */
    @Schema(description = "货币类型", example = "CNY")
    private String currency;

    /**
     * 薪资范围显示
     */
    @Schema(description = "薪资范围显示", example = "10000-20000 CNY")
    private String salaryRange;

    /**
     * 职位状态
     */
    @Schema(description = "职位状态", example = "open")
    private String status;

    /**
     * 职位状态名称
     */
    @Schema(description = "职位状态名称", example = "开放")
    private String statusName;

    /**
     * 职位负责人ID
     */
    @Schema(description = "职位负责人ID", example = "1")
    private Long ownerId;

    /**
     * 职位负责人姓名
     */
    @Schema(description = "职位负责人姓名", example = "张三")
    private String ownerName;

    /**
     * 职位描述
     */
    @Schema(description = "职位描述")
    private String description;

    /**
     * 任职要求/技能要求
     */
    @Schema(description = "任职要求/技能要求")
    private String requirements;

    /**
     * 岗位职责
     */
    @Schema(description = "岗位职责")
    private String responsibilities;

    /**
     * 福利待遇
     */
    @Schema(description = "福利待遇")
    private String benefits;

    /**
     * 职位标签/关键词
     */
    @Schema(description = "职位标签/关键词", example = "Java,Spring,MySQL")
    private String tags;

    /**
     * 职位浏览次数
     */
    @Schema(description = "职位浏览次数", example = "100")
    private Integer viewsCount;

    /**
     * 投递次数
     */
    @Schema(description = "投递次数", example = "50")
    private Integer applicationsCount;

    /**
     * 创建时间
     */
    @Schema(description = "创建时间")
    private LocalDateTime createdAt;

    /**
     * 更新时间
     */
    @Schema(description = "更新时间")
    private LocalDateTime updatedAt;
}